import { EXPIRE } from '../config/app.js' 
class Session {
	
	constructor(props) {
		this.sessionSetHandler = uni.setStorageSync;
		this.sessionGetHandler = uni.getStorageSync;
		this.sessionClearHandler = uni.removeStorageSync;
		this.sessionExpire = '_session_2021_06_18_';
	}
	
	/**
	 * 获取当前时间戳
	 */
	time()
	{
		return Math.round(new Date() / 1000);
	}
	
	setExpireSession(key)
	{
		// 缓存 key 数据的过期时间
		this.sessionSetHandler(key + this.sessionExpire, this.time() + EXPIRE);
	}
	
	getExpireSession(key)
	{
		try{
			// 获取 key 数据的过期时间
			let time = this.sessionGetHandler(key + this.sessionExpire);
			if(time) {
				// 有 key 数据的过期时间
				// key 数据时间转整型
				let intTime = parseInt(time);
				// 判断 key 数据时间是否已经过期
				if(time && time < this.time() && !Number.isNaN(time)) {
					// 过期
					this.sessionClearHandler(key);
					this.sessionClearHandler(key + this.sessionExpire);
					return false;
				} else {
					// 未过期
					return true;
				}
			}else {
				// 无 key 数据的过期时间
				return !!this.sessionGetHandler(key);
			}
		}catch(e){
			return false;
		}
	}
	
	set(key,data){
		try{
			this.setExpireSession(key);
			return this.sessionSetHandler(key,data);
		}catch(e){
			return false;
		}
	}
	
	get(key){
		try{
			let isBe = this.getExpireSession(key);
			let data = this.sessionGetHandler(key);
			console.log(isBe)
			console.log(data)
			if (data && isBe) {
					return data;
			} else {
				return null;
			}
		}catch(e){
			return null;
		}
	}
	
	clear(key)
	{
		try{
			let cahceValue = this.sessionGetHandler(key + this.sessionExpire);
			if(cahceValue)
				this.sessionClearHandler(key + this.sessionExpire);
			return this.sessionClearHandler(key);
		}catch(e){
			return false;
		}
	}
}

export default new Session;